/*================================================================
*   Copyright (C) 2020 belonging to YangZhengQing. All rights reserved.
*   
*   文件名称：sqlite3_create_table.c
*   创 建 者：YangZhengQing
*   创建日期：2020年03月18日
*   描    述：
*
*================================================================*/


//#include "sqlite3_create_table.h"


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sqlite3.h>



/*
 功能：回调函数
 参数：
	para：由exec传入的参数
	col_num：查询出一条记录有多少个表头
	col_value：查询出的记录缓存区
	col_name：表示字段的段命
  返回：
	成功返回0
	失败返回-1
 */
static int callback(void *para, int col_num, char **col_value, char **col_name)
{
	int i;
	for(i = 0; i < col_num; i++)
	{
		printf("%s = %s\n",col_name[i],col_value[i]?col_value[i]:"NULL");
	}
	printf("\n");

	return 0;
}


int main(int argc, char **argv)
{

	sqlite3					*db;//定义数据库操作句柄
	int						rv;//返回值
	char					*sql;//SQL语句指针
	char					*z_err_msg;//获取错误信息

	rv = sqlite3_open("test.db",&db);//打开数据库
	if(rv)
	{
		printf("Can't open database!:%s\n",sqlite3_errmsg(db));
		exit(0);
	}
	printf("Opening database successfully!\n");

	//制作SQL语句
	sql = "create table roommates("\
		   "stu_id varchar primary key not NULL,"\
		   "name		   text not NULL,"\
		   "age			   int  not NULL,"\
		   "address        varchar,"\
		   "telephone      varchar);";

	rv = sqlite3_exec(db,sql,callback,0,&z_err_msg);//执行sql语句
	if(rv)
	{
		printf("SQL error!:%s\n",z_err_msg);//打印错误信息
		sqlite3_free(z_err_msg);//用于释放从内存中获取的错误信息字符串
	}
	printf("Table created successfully!\n");

	sqlite3_close(db);//关闭数据库

	return 0;
}
